package com.nuoniu.sibanyun.service.erp.in;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.dto.VInventoryCheckMainSearchDto;
import com.nuoniu.sibanyun.entity.erp.in.VInventoryCheckMain;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2021-05-19
 */
public interface IVInventoryCheckMainService extends IService<VInventoryCheckMain> {

    /**
     * 获取 盘点业务数据 （上一页、下一页、首页 和 尾页）
     * @return
     */
    VInventoryCheckMain getOneByCondition(Integer actionType, Long currentId,boolean isLossOrGain);

    /**
     * 分页查询 盘点业务
     * @param page
     * @param inventoryCheckMainSearchDto
     * @return
     */
    Page<VInventoryCheckMain> pageVInventoryCheckMain(Page page, VInventoryCheckMainSearchDto inventoryCheckMainSearchDto);

    /**
     * 获取编码
     * @return
     */
    String getCode();

    /**
     * 保存
     * @param vInventoryCheckMain
     */
    void  saveOrder(VInventoryCheckMain vInventoryCheckMain);

    /**
     * 单据复核
     */
    void firstExamine(Long id, Integer status);

    /**
     * 单据监盘
     * @param id
     */
    void secondExamine(Long id, Integer status);

    /**
     * 单据 批准
     * @param id
     */
    void thirdExamine(Long id, Integer status);

    /**
     * 删除
     * @param id
     */
    void delete(Long id);

    /**
     * 自动生成 其他入库单据
     * @param inventoryCheckMain
     */
    void autoGenerateOtherInOut(VInventoryCheckMain inventoryCheckMain);

    /**
     * 自动删除 其他出入库
     * @param inventoryCheckMain
     */
    void autoDeleteOtherInOut(VInventoryCheckMain inventoryCheckMain);

    /**
     * 校验其他出入库单据 是否 来自盘点作业
     * @param inventoryCheckMain
     */
    void checkOtherInOutFromInventoryCheck(VInventoryCheckMain inventoryCheckMain);

}
